/**
 * 用户模块的 Store
 * 
 */
export default {
  // 开启命名空间
  namespaced: true,
  
  // token ： Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjE1LCJpYXQiOjE2MjI1Mjk3MTAsImV4cCI6MTAwMTYyMjUyOTcwOX0.f3J1tHS0eHQ8GMkskTpH6ALyfvCwEOsTvnFHpXyrcL8
  state: () =>({
    address: JSON.parse(uni.getStorageSync('address') || '{}'), // 收货地址
    token: uni.getStorageSync('token') || '', // 用户登录后的获取到的 token
    userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'), // 用户信息
    redirectInfo: null // 重定向的地址
  }),
  
  mutations: {
    // 传递需要重定向的地址
    updateRedirectInfo (state, urlObj) {
      state.redirectInfo = urlObj
    },
    
    // 更新 Token 的方法
    updateToken (state, token) {
      state.token = token
      
      this.commit('m_user/saveTokenToStorage')
    },
    
    // 将 Token 持久化到本地
    saveTokenToStorage (state) {
      uni.setStorageSync('token', state.token)
    },
    
    // 更新用户的信息
    updateUserInfo (state, userinfo) {
      state.userinfo = userinfo
      
      this.commit('m_user/saveUserToStorage')
    },
    
    // 将用户信息持久化到本地
    saveUserToStorage (state) {
      uni.setStorageSync('userinfo', JSON.stringify(state.userinfo))
    },
    
    // 更新收货地址
    updateAddress (state, address) {
      state.address = address
      
      // 调用 将收货地址持久化到本地 方法
      this.commit('m_user/saveAddressToStorage')
    },
    
    // 将收货地址持久化到本地
    saveAddressToStorage (state) {
      uni.setStorageSync('address', JSON.stringify(state.address))
    }
    
  },
  
  getters: {
    // 拼接收货地址功能
    addressStr (state) {
      // 解构数据
      const {provinceName, cityName, countyName, detailInfo} = state.address
      
      // 判断是否存在数据
      if (!provinceName) return ''
      
      // 拼接返回的地址
      return provinceName + cityName + countyName + detailInfo
    }
    
  }
  }